
#ifndef _SoundEngineWrapper_h
#define _SoundEngineWrapper_h

#include <System/Object.h>
#include <REvents.h>
#include <System/EventHandler.h>
#include <System/EventArgs.h>

namespace Riccsson
{
	namespace Xna
	{
		namespace Framework
		{
			namespace Audio
			{
				class _SoundEngineBase
				{
					public: event<Void, System::EventHandler> OnBuffer;

					public: virtual void initialize() = 0;
					public: virtual void release() = 0;

					public: virtual void play() = 0;
					public: virtual void stop() = 0;
					public: virtual void pause() = 0;
					
					public: virtual void submitBuffer(byte* buffer, int length) = 0;
				};

				class _SoundEngineWrapper
				{
					private: static _SoundEngineBase* _instance;

					private: _SoundEngineWrapper();

					public: ~_SoundEngineWrapper();
					
					public: static _SoundEngineBase* getInstance();

					public: static void releaseInstance();
				};
			}
		}
	}
}

#endif